package com.tj.admin.auth.service;

import com.tj.admin.auth.domain.Admin;
import com.tj.admin.auth.vo.AdminVo;

import java.util.List;

/**
 * Created with IntelliJ IDEA.
 * User: binary (mr.vencnet@gmail.com)
 * Date: 2017/3/11
 * Time: 上午11:28
 */
public interface AdminService {

    /**
     * 注册管理员
     *
     * @param admin
     * @return
     */
    Boolean registration(Admin admin);

    /**
     * 获取一个管理员根据账号
     *
     * @param account
     * @return
     */
    Admin getOneAdminByAccount(String account);

    void addNewAccessToken(int id, String token);

    /**
     * @param admin
     * @return
     */
    Boolean add(Admin admin, List<Long> roleIds, String productCode, List<String> productCodeList);

    /**
     * @param admin
     * @return
     */
    Boolean update(Admin admin, List<String> list);

    /**
     * 更新管理员状态
     *
     * @param adminId
     * @param adminStatus
     * @return
     */
    Boolean updateAdminStatus(Long adminId, Integer adminStatus);

    /**
     * 更新管理员密码
     *
     * @param adminId
     * @param password
     * @return
     */
    Boolean updateAdminPassword(Long adminId, String password);

    /**
     * 删除管理员
     *
     * @param adminId
     * @return
     */
    Boolean deleteAdmin(Long adminId);

    /**
     * @param accessToken
     * @return
     */
    Admin getByAccessToken(String accessToken);


    /**
     * 获取管理员信息
     *
     * @return
     */
    List<Admin> getAdminListByIdList(List<Long> adminIdList);

    /**
     * 获取管理员信息
     *
     * @return
     */
    List<Admin> getAdminListByIdList(List<Long> adminIdList, String merchantCode);

    /**
     * 获取管理员列表（按产品类型）
     *
     * @return
     */
    public List<Admin> getAdminListByIdListAndProductType(List<Long> adminIdList, String productType);

    /**
     * 根据管理员ID获取菜单IDS
     *
     * @param adminId
     * @return
     */
    List<Long> getMenuIdsByAdminId(Long adminId);

    /**
     * 查询一个管理员信息
     *
     * @param adminId
     * @return
     */
    Admin getOneAdminByAdmin(Long adminId);

    /**
     * 信审信息补充（历史遗留原因导致module隔离，这里只做透传）
     *
     * @param adminVo
     * @return
     */
    AdminVo fillAuditProfile(AdminVo adminVo);

    /**
     * 信审信息补充（历史遗留原因导致module隔离，这里只做透传）
     *
     * @param adminVo
     * @return
     */
    AdminVo fillCollectionProfile(AdminVo adminVo);


}
